<?php
	require_once '../core/Debug.php'; //System Debug...
	require_once '../core/config_.php';//System Config...
	require_once '../core/Init.php';  //System Init...

    //Db_PaymentOnline::deleteQueue();

    $payment_not_complete = Db_PaymentLog::getQueue();

    //var_dump($payment_not_complete);exit;
    if(!$payment_not_complete){
        echo "Empty data";
        exit;
    };

    foreach($payment_not_complete as $order_id){
        echo $order_id . ': ';

        $cart = DB::select('cart', 'id=' . $order_id, __FILE__ . ' line ' . __LINE__);
        if(!$cart || !isset($cart['code'])){
            echo ' không có cart_code<br/>';
            continue;
        }
        $order_code = $cart['code'];

        $pg = new PG_checkout();
        $info = $pg->querySohapayInfo($order_code);

        if($info=='canceled_or_notpay'){
            Db_PaymentLog::removeFromQueue($order_id);
            echo 'Đơn hàng này chưa được thanh toán.';
            return;
        }elseif($info=='not_connect'){
            echo 'Kết nối tới SohaPay bị lỗi.';
            return;
        }elseif($info=='invalid_order_code'){
            echo 'Order code không chính xác, bạn hãy kiểm tra lại.';
            return;
        }elseif(is_array($info)){
            if($info['shp_order_status']==1){ //đã thanh toán thành công
                //xóa khỏi queue
                Db_PaymentLog::removeFromQueue($order_id);

                if($cart && $cart['status'] < 4){
                    $cart_id = $cart['id'];
                    $room_id = DB::select_all('booking', 'cart_id=' . $cart_id);
                    $conflict = false;
                    foreach ($room_id as $rid) {
                        $min_room_available = Db_Room::getMinAvailableRoomNumber($rid['room_id'], $rid['date_start'], $rid['date_end']);
                        if ($min_room_available < $rid['quantity']){
                            $conflict = true;
                        }
                    }
                    if ($conflict == true) {
                        $error = 'conflict';
                        //TRƯỜNG HỢP ĐÃ THANH TOÁN, NHƯNG HẾT PHÒNG
                    } else {
                        $cart_status = 4; //thanh toán thành công
                        $booking_status = array('status' => 1);
                        DB::update('booking', $booking_status, 'cart_id=' . $cart_id, __FILE__ . ' line ' . __LINE__);
                        foreach ($room_id as $rid) {
                            $available = Db_Room::getAvailableRoomNumber($rid['room_id'], $rid['date_start'], $rid['date_end']);
                            for ($i = $rid['date_start']; $i < $rid['date_end']; $i += 24 * 60 * 60) {
                                if($available[$i] == 0){
                                    $check_r = array();
                                    $check_r['status'] = 2; // đã hết phòng.
                                    DB::update('check_room', $check_r, 'check_time = ' . $i . ' AND room_id=' . $rid['room_id']);
                                }
                                $room_status = DB::select('room_status', 'day = ' . $i . ' AND room_id=' . $rid['room_id']);
                                if ($room_status != '' AND sizeof($room_status) > 0) {
                                    $room_update = array();
                                    $room_update['available'] = $available[$i];
                                    DB::update('room_status', $room_update, 'day = ' . $i . ' AND room_id=' . $rid['room_id'], __FILE__ . ' line ' . __LINE__);
                                }else{
                                    $v = array();
                                    $v['room_id'] = $rid['room_id'];
                                    $v['available'] = $available[$i];
                                    $v['created_time'] = TIME_NOW;
                                    $v['is_lock'] = 1;
                                    $v['day'] = $i;
                                    DB::insert('room_status', $v);
                                }
                            }
                        }
                        $format = '%d/%m/%Y %H:%M:%S';
                        $strf = strftime($format);
                        $history = 'Resync từ Sohapay: đã thanh toán đơn hàng lúc ' . $strf;
                        Db_Booking::updateBillFromCart($cart_id, 1, 0, $history);
                        $cart = Db_Booking::getCart($cart_id);

                        Db_Booking::send_mail_sohapay($cart_id);
                        $v = array();
                        $v['order_id']          = $order_id;
                        $v['order_code']        = $order_code;
                        $v['user_id']           = $cart['user_id'];
                        $v['order_email']       = $cart['user_email'];
                        $v['payment_time']      = strtotime($info['shp_payment_time']);
                        $v['payment_type']      = $info['shp_payment_type'];
                        $v['price']             = $info['shp_order_price'];
                        $v['response_code']     = $info['shp_payment_response_code'];
                        $v['response_message']  = $info['shp_payment_response_description'] .
                            '/' . $info['shp_payment_response_message'];
                        $v['transaction_info']  = $info['shp_order_info'];
                        $v['created_time']      = TIME_NOW;

                        $payment_log_id = DB::insert('payment_log', $v, false,  __FILE__ . ' line ' . __LINE__);

                        $data = array('note_admin' => $v['response_message'], 'user_id_m' => User::id(), 'user_name_m' => User::user_email(), 'time_m' => TIME_NOW, 'status' => $cart_status);
                        if($payment_log_id) $data['payment_log_id'] = $payment_log_id;
                        DB::update_id('cart', $data, $cart_id, __FILE__ . ' line ' . __LINE__);


                        echo 'success';
                    }
                }else{
                    echo 'Đơn hàng này không có quyền sync.';
                }
            }else{
                echo 'Đơn hàng này chưa được thanh toán.';
            }
        }

        echo '<br/>';
    }

?>